package com.joymedia.thor.page;

import java.util.Optional;

/**
 * @author XSH
 */
public interface Pageable {
    /**
     * 返回每页显示条数
     *
     * @return 每页显示条数
     */
    int getPageNumber();

    /**
     * 返回当前页数
     *
     * @return 当前页数
     */
    int getPageSize();

    /**
     * 返回查询开始条数
     *
     * @return 查询开始条数
     */
    int getOffset();

    /**
     * 返回下一页
     *
     * @return 略
     */
    Pageable next();

    /**
     * 返回上一页
     *
     * @return 略
     */
    Pageable previousOrFirst();

    /**
     * 返回第一页
     *
     * @return 略
     */
    Pageable first();

    /**
     * 略
     *
     * @return 略
     */
    default Optional<Pageable> toOptional() {
        return isUnpaged() ? Optional.empty() : Optional.of(this);
    }

    /**
     * 略
     *
     * @return 略
     */
    default boolean isPaged() {
        return true;
    }

    /**
     * 略
     *
     * @return 略
     */
    default boolean isUnpaged() {
        return !isPaged();
    }
}
